package SysClassController

import (
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
	dto2 "project2/dto"
	"project2/g"
	models "project2/model"
	"project2/utils"
)

func InitRoutes(r *gin.Engine) {
	r.POST("/api/sys_class/list", list)
	r.POST("/api/sys_class/add", add)
	r.POST("/api/sys_class/update", update)
	r.GET("/api/sys_class/delbyid", delbyid)
	r.GET("/api/sys_class/getbyid", getbyid)

}
func list(ctx *gin.Context) {
	var body map[string]interface{}
	utils.GetAllBody(ctx, &body)
	var dto dto2.SysClassDto
	dto2.BuildSysClassDto(&body, &dto)

	var listdata []models.SysClass
	var query *gorm.DB
	var total int64
	dto.BuildQuery(&query)
	query.Find(&listdata)
	query.Count(&total)

	utils.Ok(ctx, gin.H{
		"data":  listdata,
		"total": total,
	})

}

func add(ctx *gin.Context) {
	var body map[string]interface{}
	utils.GetAllBody(ctx, &body)
	var dto dto2.SysClassDto
	dto2.BuildSysClassDto(&body, &dto)

	var entity models.SysClass
	dto.BuildEntityForAdd(&entity)
	g.Db.Create(&entity)
	utils.Ok(ctx, &entity)
}

func update(ctx *gin.Context) {
	var body map[string]interface{}
	utils.GetAllBody(ctx, &body)

	var dto dto2.SysClassDto
	dto2.BuildSysClassDto(&body, &dto)

	var entity models.SysClass
	dto.BuildEntityForUpdate(&entity)

	var changeLog string
	entity.UpdateEnity(int(entity.Id), &changeLog)
	utils.Ok(ctx, &entity)
}

func delbyid(ctx *gin.Context) {
	id := utils.ParserInt8(ctx.Query("id"))
	if id <= 0 {
		utils.FailRes(ctx, "id 必填")
		return
	}
	g.Db.Where("id=?", id).Delete(&models.SysClass{})
	utils.Ok(ctx, nil)

}
func getbyid(ctx *gin.Context) {
	id := utils.ParserInt8(ctx.Query("id"))
	if id <= 0 {
		utils.FailRes(ctx, "id 必填")
		return
	}
	var one models.SysClass
	g.Db.Where("id=?", id).First(&one)
	if one.Id <= 0 {
		utils.Ok(ctx, nil)
		return
	}
	utils.Ok(ctx, one)

}
